<?php
/**
 * Filters value, comming from radio box and checks if this value is in default values
 * If it is - returns this value, otherwise returns default value
 *
 * @author den
 */
class Lemar_Filter_DefaultValueFromPossible implements Zend_Filter_Interface
{
	/**
	 * Possible values
	 *
	 * @var array
	 */
	protected $_aPossibleValues = array();

	/**
	 * Default value
	 *
	 * @var string
	 */
	protected $_sDefaultValue = '';

	public function __construct($aPossibleValues, $sDefaultValue = '')
	{
		$this->setPossibleValues($aPossibleValues);
		$this->setDefaultValue($sDefaultValue);
	}

	public function setPossibleValues($aPossibleValues)
	{
		$this->_aPossibleValues = (array) $aPossibleValues;
		return $this;
	}

	public function getPossibleValues()
	{
		return $this->_aPossibleValues;
	}

	public function setDefaultValue($sDefaultValue)
	{
		$this->_sDefaultValue = (string) $sDefaultValue;
		return $this;
	}

	public function getDefaultValue()
	{
		return $this->_sDefaultValue;
	}

	public function filter($sValue)
	{
		if (null === $sValue || '' === $sValue) {
			return null;
		}
		return in_array($sValue, $this->_aPossibleValues) ? $sValue : $this->_sDefaultValue;
	}
}